$(function() {
	// 刷新验证码
	$('#refresh').click(
			function() {
				$("#vCode").attr(
						"src",
						$('#vCode').attr('src') + "?time="
								+ new Date().getTime());
				$('#verify').val('');
			});

	// 名称检查的方法
	var nameCheck = function() {
		// 名称的值
		var v = $('#name').val();
		// 检查长度
		if (v.replace(/[^\x00-\xff]/g, "**").length < 4
				|| v.replace(/[^\x00-\xff]/g, "**").length > 25) {
			$('#tipName').text(
					'4-25个字符，或2-12个汉字，推荐中文，请勿包含姓名/身份证/银行卡等隐私信息，注册后无法修改');
			$("#tipName").css("display", "inline-block").css("color", "red");
			return false;
		}
		return true;
	};

	// 检查名称
	$('#name').blur(
			function() {
				// 名称的值
				if (!nameCheck()) {
					return;
				}
				// 注册名冲突检查
				$.post("/register/registerNameCheck.do", {
					name : $(this).val()
				}, function(json) {
					// 失败提示
					if (json.returnFlag == 'fail') {
						$('#tipName').text(json.msg);
						$("#tipName").css("display", "inline-block").css(
								"color", "red");
						return;
					}
					// 成功提示
					$('#tipName').text('用户名可用');
					$("#tipName").css("display", "inline-block").css("color",
							"blue");
				}, 'json')
			});

	// 密码的检查
	var passwordCheck = function() {
		// 名称的值
		var v = $('#password').val();
		var hasNumber = /^(.*)?[0-9a-zA-Z]+(.*)?$/;
		var hasWord1 = /^(.*)?[a-z]+(.*)?$/;
		var hasWord2 = /^(.*)?[A-Z]+(.*)?$/;
		// 检查长度
		if (v.length < 8 || v.length > 16) {
			$('#tipPassword').text('密码长度不足，长度要求8-16位');
			$("#tipPassword").css("display", "inline-block")
					.css("color", "red");
			return false;
		} else if (!(hasNumber.test(v) && hasWord1.test(v) && hasWord2.test(v))) {
			$('#tipPassword').text('密码必须含有数字和大小写字母');
			$("#tipPassword").css("display", "inline-block")
					.css("color", "red");
			return false;
		} else {
			$('#tipPassword').text('密码符合规则');
			$("#tipPassword").css("display", "inline-block").css("color",
					"blue");
		}
		return true;
	};

	// 绑定密码的检查
	$('#password').blur(passwordCheck);
	// 再次输入密码的检查
	var repasswordCheck = function() {
		// 如果不一致,提示
		if ($('#password').val() != $('#repassword').val()) {
			$('#tipRepassword').text('两次密码输入不一致').addClass('tips');
			$("#tipRepassword").css("display", "inline-block").css("color",
					"red");
			return false;
		}
		// 一致隐藏提示
		$('#tipRepassword').hide();
		return true;
	};
	// 绑定 核对密码的事件
	$('#repassword').blur(repasswordCheck);
	// 手机号码的检查
	var mobileCheck = function() {
		// 名称的值
		var v = $('#mobile').val();
		// 检查长度
		if (v.length != 11) {
			$('#tipMobile').text('请输入11位的手机号码').addClass('tips');
			$("#tipMobile").css("display", "inline-block").css("color", "red");
			return false;
		}
		$('#tipMobile').hide();
		return true;
	};

	// 绑定手机号码的事件
	$('#mobile').blur(
			function() {
				if (!mobileCheck()) {
					return;
				}
				// 手机号合法性检查
				$.post("/register/registerMobileCheck.do", {
					mobile : $(this).val()
				}, function(json) {
					if (json.returnFlag == 'fail') {
						$('#tipMobile').text(json.msg).addClass('tips');
						$('#tipMobile').css("display", "inline-block").css(
								"color", "red");
						return;
					}
					// 成功隐藏提示
					$('#tipMobile').hide();
				}, 'json')
			});

	// 验证码的长度 检查
	var verifyCheck = function() {
		if ($('#verify').val().length != 4) {
			$('#tipVCode').text('验证码输入错误').addClass('tips');
			$('#tipVCode').css("display", "inline-block").css("color", "red");
			return false;
		}
		// 验证验证码是否正确
		$.post("/common/checkVerifyCode.do", {
			vCode : $('#verify').val()
		}, function(json) {
			// 失败提示
			if (json.returnFlag == 'fail') {
				$('#tipVCode').text('验证码输入错误').addClass('tips');
				$('#tipVCode').css("display", "inline-block").css("color",
						"red");
				return;
			}
		}, 'json')

		$('#tipVCode').hide();
		return true;
	};

	// 绑定检查事件
	$('#verify').blur(verifyCheck);

	// 提交表单事件
	var aClick = function() {
		// 检查名称/密码/再次密码/手机号码/验证码/同意协议
		if (!nameCheck() || !passwordCheck() || !repasswordCheck()
				|| !mobileCheck() || !verifyCheck()) {
			return;
		}
		var mobile = $("#mobile").val();
		$(".yzmsend").text(mobile);
		$(this).parents(".wrapper").find(".alert").show();
	};

	$('#aSubmit').click(aClick);

	// 注册执行
	$("#registerPlay").click(function() {
		var mobileCode = $("#mobileCode").val();

		if (mobileCode == "") {
			$('.code-tip-error').text("请输入手机验证码").show();
			$('.code-tip').hide();
			return false;
		}

		$.ajax({
			url : "/sms/checkMobileCode.do",
			type : "post",
			data : {
				mobileCode : mobileCode,
				mobile : $('#mobile').val()
			},
			dataType : "json",
			success : function(json) {
				if (json.returnFlag == 'fail') {
					$('.code-tip-error').text(json.msg).show();
					$('.code-tip').hide();
					return false;
				}
				$('.code-tip').text(json.msg).show();
				$('.code-tip-error').hide();
				checkMobileCode(mobileCode);
				return true;
			}
		});
		// 阻止 重复提交
		$(this).removeAttr('onclick');
	})
	$(".close-alert").click(function() {
		$(this).parents(".alert").hide();
	});
})

/* 设置全局变量sendTime */
var sentTime = 59;

/* 发送验证码 */
function sent() {
	if (sentTime == 0) {
		$('#send').removeAttr('disabled');
		$('#send').val('发送验证码');
		sentTime = 59;
	} else {
		$('#send').attr('disabled', true);
		$('#send').val('重发验证码（' + sentTime + '）');
		$('#send').css("color", "#999");
		sentTime--;
		setTimeout(function() {
			sent();
		}, 1000);
	}
}
$(document).on('click', '#send', function() {
	$.getJSON("/sms/sendVerifyCode.do", {
		mobile : $("#mobile").val()
	}, function(json) {
		// 显示发送成功信息
		$('.code-tip-error').hide();
		$('.code-tip').show();
	});
	sent();
});

// 验证手机验证码
function checkMobileCode(mobileCode) {
	// 提交处理
	$('#sendMobileCode').val(mobileCode);
	$.post("/register/submitRegister.do", $('#myForm').serialize(), function(
			json) {
		if (json.returnFlag == 'fail') {
			// 显示错误
			$('.code-tip-error').text(json.msg).show();
			$('.code-tip').hide();
			// 更新验证码
			// $('#refresh').click();
			// $('#verify').val('');
			// 重新绑定 提交事件
			$(this).click();
		} else {
			// 用户名
			var name = $('#name').val();
			// 手机号
			var mobile = $('#mobile').val();
			// 对用户名和手机号进行加密，绑定参数跳转
			window.location.href = "registerSuccess.html?" + encryptParam("loginName=" + name + "&mobilePhone=" + mobile);
		}
	}, 'json');
}